CoFCamera 運算子

Operator Library: Hardware Platform

此 operator 代表每秒 25 Gbit 光纖通道的 CXP over Fiber (CoF) 相機與 VisualApplets 之間的影像資料介面。此 operator 可用於四通道 CoF 組態,即 100 Gbit/s。介面拓撲由 FiberConnection 參數選擇,允許 operator 連線至 QSFP28 連接埠 [0] 或 QSFP28 連接埠 [1]。無論相機提供什麼格式,operator 都會輸出原始影像資料。然後,您需要將此影像資料轉換為相機傳送的格式。若要轉換影像資料,請使用適當的 operator 來進行聚集,並將原始位元組值轉型為像素值。操作過程中的某些情況可能會透過如下所述的事件系統進行通訊。此外,operator 具有多個可發送信號以表示與相機連線狀態的參數。

適用於硬體平台
imaFlex 2 Dual 100

在 VisualApplets 中進行實例化

此運算子在其輸出 O 上提供影像資料。此輸出隨時存在。除了此標準輸出連接埠之外,您還可以針對 CXP 標頭中繼資料設定選用的 MetaDataO 輸出。在運算子實例化期間,會出現以下彈出式對話方塊:

您可以在此指定選用的中繼資料連接埠。如果您將連接埠可用性設為「0」(預設值),則運算子中將不會存在該連接埠。如果您將連接埠可用性設為 1,則該中繼資料連接埠將可在運算子介面中使用。

選用的 MetaDataO 連接埠

MetaDataO 的組織形式為 10x1 kernel 鏈結,由 10 個 24-bit 元件組成。輸出格式如下圖所示。

每個 CXP 影格都提供相應的影像標頭。壓縮的影像標頭由 10 個不同的值組成。這些值介於 8 到 24-bit 之間。operator 將這 10 個值提供為已填補的 kernel 值 (10x1),每個元件均填補至 24-bit。

影像標頭欄位 Kernel 索引 Bit Width [bit] 描述
StreamId 0 8 CXP 串流的 ID
Tag 1 16 來源影像索引。每傳輸一張影像,該索引便會遞增,並在 0xFFFF 時循環歸零。包含與同一影像相關資料的每個串流(在使用多個取樣 (multi-tap) 串流的情況下)都應使用相同的編號。
XSize 2 24 此值表示以像素為單位的影像寬度。
XOff 3 24 此值表示相對於完整裝置影像最左側像素的影像水平位移(以像素為單位)。
YSize 4 24 此值表示以像素為單位的影像高度。對於線掃描影像,此值設定為 0。
YOff 5 24 此值表示相對於完整裝置影像最頂端線條的影像垂直位移(以像素為單位)。對於線掃描影像,此值設定為 0。
DSizeL 6 24 此值表示每條影像線的 32-bit 資料字數量。
PixelF 7 16 此值表示 Pixel Format。
TapG 8 16 此值表示多重讀取幾何形狀 (tap geometry)。
Flags 9 8 影像旗標。

裝置資源使用量

根據參數 FiberConnection 的選擇,operator 會使用 Port[0] CoF Lane 的 4 個資源,或 Port[1] CoF Lane 的 4 個資源。該資源代表 QSFP28 連接器中的實體光纖通道,位於連接埠 [0] 或連接埠 [1]。然後,配置的通道將專門用於 CoF 通訊協定。使用不同 operator(資料轉發)的不同通訊協定也可以使用 QSFP28 連接器。但是,通訊協定選擇適用於整個 QSFP28 連接埠,即其中的所有 4 個通道。您可以在 AppletProperties operator 的 FiberProtocol0 和 FiberProtocol1 參數中定義通訊協定。對於事件系統,會使用類型為 EventPort 的可設定資源。此外,還會配置一個唯讀資源 EventID,供執行階段軟體用於事件通道識別與註冊。

Port[n] 代表 QSFP28[n] 連接器。資源索引是所選連接器內的光纖通道。

[備註] 資源為唯讀

除了 EventPort 之外的所有資源皆為唯讀。其值反映了對應至連接埠(連接器)與通道(連接器內的光纖連線)的 FiberConnection 參數值。

[重要] 修改影像寬度與影像高度

透過輸出連結的最大影像寬度和高度屬性,您可以將寬度和高度調整為相機特定的設定。不過,連接埠 O 上的最大影像寬度 必須能夠被連接埠 O 的 Parallelism 整除。因此,請確保最大影像寬度能夠被連接埠 O 的 Parallelism 整除!

錯誤處理與事件系統

當 operator 偵測到接收到的重建影格大於或小於相機在 CXP 影像標頭中所宣告的大小時計,對應的其中一個錯誤 Counter 參數便會遞增:

  • 如果接收到的影格尺寸小於影像標頭中所指定的尺寸,FrameCorruptedCount 便會遞增。

  • 如果接收到的影格尺寸大於影像標頭中所指定的尺寸,FrameOversizedCount 便會遞增。

For a set of very critical errors, the operator will forward asynchronous events to the host runtime software (Framegrabber SDK). Events can be caused by corrupted frames or CRC errors. The event name in the Framegrabber API is <hierarchical operator name>\CxpStreamStatus, e.g. Device1\Process0\Camera\CxpStreamStatus. The event payload is provided as four 16-bit data words. The event format is defined as follows:

  • word [0]:

    • Bits [0:15]:發生事件所在的 CXP 影像標籤。

  • word [1]:

    • Bits [0:7]:保留且無定義功能。您可以忽略其值。

    • Bits [8:15]:發生事件所在的串流 ID。

  • word [2]:

    • Bit [0]:發生 CRC 錯誤。

    • Bits [1:15]:保留未用,無特定功能。您可以忽略其數值。

  • word [3]:

    • Bit [0]:保留未用,無特定功能。您可以忽略其數值。

    • Bit [1]:發生事件遺失。這表示先前的事件已遺失。當執行階段軟體未對事件做出反應且內部事件佇列溢位時,就會發生此情況。

    • Bit [2:15]:保留未用,無特定功能。您可以忽略其數值。

每個錯誤事件都會觸發執行階段軟體中的中斷。為減少中斷次數,可能會合併具有相同張數標記的多個事件。合併事件時,其錯誤旗標會一併結合。

如果事件遺失,緊接其前的事件將包含有關遺失事件的資訊。此先前的事件無法與共用相同張數標記的任何後續事件進行合併。

由 CRC 錯誤引起的事件包含一個張數標記,但此標記不一定總是對應到發生 CRC 錯誤的確切畫面。在某些情況下,標記可能會指涉前一個或後一個畫面。

當相機傳送跨越兩個或多個畫面之間轉場的 CXP 封包時,可能會發生此情況。CRC 計算會在封包結尾完成,而串流資料則會即時重建。因此,可能會在操作員已經傳送前一個畫面之後偵測到 CRC 錯誤。

在正常狀況下(相機封包不包含一個畫面的結尾和下一個畫面的開頭),在 CRC 錯誤期間回報的張數標記將一律正確。

在其他情況下,如果完整的畫面串流資料小於最大封包大小,則單一封包內可能會出現一個畫面的重疊。在這種情況下,軟體應用程式也應將前一個畫面(張數標記 – 1)和後一個畫面(張數標記 + 1)視為可能已損毀。

I/O Properties

Property Value
Operator Type M
輸出連結 O,影像資料輸出
MetaDataO,選配的後設資料輸出

支援的 Link 格式

Link Parameter Output Link O 輸出 Link MetaDataO
Bit Width 8 24
Arithmetic unsigned unsigned
Parallelism 48 1
Kernel Columns 1 10
Kernel Rows 1 1
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} (default: VALT_IMAGE2D) {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} (default: VALT_IMAGE2D)
Color Format VAF_GRAY VAF_GRAY
Color Flavor FL_NONE FL_NONE
Max. Img Width 任意(預設值:1056) 1
Max. Img Height 任意(預設值:1056) 1

參數

FiberConnection
Type Static Write parameter
Default port_0_lane_0_1_2_3
Range {port_0_lane_0_1_2_3, port_1_lane_0_1_2_3}

參數 FiberConnection 用於定義相機連接至哪個 QSFP28 連接埠,以及相機操作員正在使用該連接埠的哪些通道。

目前,連接埠 0 和連接埠 1 僅支援具備 4 個通道的相機組態。唯有當該連接埠之 AppletProperties 運算子中的 FiberProtocol 參數設為 CoF 而非 DataForwarding 時,才能使用所選的 QSFP28 連接埠。

如果 FiberProtocol 參數設為 DataForwarding,且 CoFCamera 運算子嘗試對應至該光纖連接埠,則設計規則檢查 (DRC) 將會產生錯誤訊息。在這種情況下,FiberConnection 參數將被標記為衝突(紅色),且將滑鼠游標懸停其上方將會顯示說明衝突的快速提示訊息。

在相同的通道上,只能有一個 CoFCamera 運算子使用相同的硬體 QSFP28 連接埠。多個運算子之間的對應在整個設計中必須是唯一的。

MaxPacketSize
Type Static Write parameter
Default _16384
Range {_16384, _8192}

參數 MaxPacketSize 根據 CXP 標準定義了所連接相機的最大串流封包大小(以位元組為單位)。相機將會傳送小於或等於此限制的串流封包。

此參數會影響區塊 RAM (Block RAM) FPGA 資源的使用量:數值越小,所使用的區塊 RAM 資源就越少。範例(4 個通道):數值 _16384 使用 64 個區塊 RAM 資源;數值 _8192 使用 32 個區塊 RAM 資源。

InjectError
Type 動態寫入參數
Default PacketTagError
Range {PacketTagError, ImageTagError, CorrectedError, PacketBufferOverflow, CrcError, FrameCorrupted, FrameOversized, UnexpectedStartupData}

參數 InjectError 用於出於測試目的而注入錯誤。注入的錯誤會使對應的錯誤計數參數遞增。

根據錯誤類型,注入也可能導致軟體中斷事件。如需有關錯誤語意詳細資訊,請參閱相關參數的說明。

UsedConnections
Type 動態讀取參數
Default 4
Range [1 : 4]

此參數目前未使用。 它是為了未來的功能而保留的。

PacketTagErrorCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

參數 PacketTagErrorCount 用於計算收到的封包中,標籤不符合 CXP 標準預期標籤的數量。當後續串流封包標籤列舉中出現間隙時,此值會進行計數。這是一個 12-bit 的 Counter:

  • Bits [10:0] 代表實際的 Counter 值。

  • Bit [11] 代表 Counter 溢位。

當設定了溢位位元時,該 Counter 值應視為不重要(don't care),也就是說已發生超過 2047 次錯誤情況。

ImageTagErrorCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於計算影像標頭標籤、CXP 標準預期標籤以及收到的標籤之間發生了多少次不匹配。這是一個 12-bit 的 Counter:

  • Bits [10:0] 代表實際的計數值。

  • Bit [11] 表示溢位。

如果設定了溢位位元,則該 Counter 值無效且應被忽略,這意味著發生了超過 2047 次錯誤情況。

CorrectedErrorCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數顯示在影像標頭或行標記中偵測到並已成功修正的錯誤數量。這是一個 12-bit 的 Counter:

  • Bits [10:0] 代表實際的計數值。

  • Bit [11] 表示溢位。

如果設定了溢位位元,則該 Counter 值無效且應被忽略,這意味著發生了超過 2047 次錯誤情況。

PacketBufferOverflowCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於監控通道綁定封包緩衝區中的溢位情況。由於 CXP 協定,溢位僅會在使用超過一個光纖通道的組態中發生。這是一個 12-bit 的 Counter:

  • Bits [10:0] 代表實際的計數值。

  • Bit [11] 表示溢位。

如果設定了溢位位元,則該 Counter 值無效且應被忽略,這意味著發生了超過 2047 次錯誤情況。

PacketBufferOverflowSource
Type 動態讀取參數
Default 0
Range [0x0 : 0xF]

此參數實作了一個位元遮罩,用於查詢封包緩衝區溢位發生在哪四個 CXP 通道(即光纖通道)中的哪一個。順序:

  • LSB = 操作員配置的最低 CXP 通道號碼。

  • MSB = 操作員配置的最高 CXP 通道號碼。

CameraScanMode
Type 動態讀取參數
Default 面積
Range {area, line}

收到的影像標頭指出串流是用於面陣掃描還是線陣掃描應用。此參數顯示最近收到的串流影像標頭資訊。

UnexpectedStartupDataCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於偵測一種錯誤情況:操作員重設後的第一個資料值是不預期的,因為事先未收到任何影像標頭。它會回報處理開始時的不預期位元組數。這是一個 12-bit 的 Counter:

  • Bits [10:0] 代表實際的計數值。

  • Bit [11] 表示溢位。

如果設定了溢位位元,則該 Counter 值無效且應被忽略,這意味著發生了超過 2047 次錯誤情況。

由於相機或 Frame Grabber 韌體的實作錯誤,或對探索程序的軟體控制不正確,可能會發生不預期的啟動資料。相機、光纖模組或光纖纜線的硬體缺陷也可能導致這種情況。

FrameCorruptedCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於計算擷取期間損毀的畫格。損毀的畫格包含傳送至 VisualApplets 管線的錯誤像素。這是一個 12-bit 的 Counter:

  • Bits [10:0] 代表實際的計數值。

  • Bit [11] 表示溢位。

如果設定了溢位位元,則該 Counter 值無效且應被忽略,這意味著發生了超過 2047 次錯誤情況。

FrameOversizedCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於計算擷取期間偵測到的過大畫格數量。過大畫格是指包含的行數或像素數多於影像標頭中指定數量的畫格。此類錯誤可能是由硬體缺陷引起的傳輸問題或相機中的韌體錯誤所導致。這是一個 12-bit 的 Counter:

  • Bits [10:0] 代表實際的計數值。

  • Bit [11] 表示溢位。

如果設定了溢位位元,則該 Counter 值無效且應被忽略,這意味著發生了超過 2047 次錯誤情況。

CrcErrorCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於計算 CXP 串流封包中發生 CRC 錯誤的次數。這是一個 12-bit Counter:

  • Bits [10:0] 代表實際的計數值。

  • Bit [11] 表示溢位。

如果設定了溢位位元,則該 Counter 值無效且應被忽略,這意味著發生了超過 2047 次錯誤情況。